import os


class ProjectManager:
    def __init__(self, output_path='output/ex1'):
        """
        初始化项目管理器
        :param output_path: 项目输出路径，默认'output/ex1'
        """
        self.output_path = output_path
    
    def generate_file(self, relative_file_path, content, mode='overwrite'):
        """
        生成项目文本文件
        :param relative_file_path: 相对项目输出路径的相对路径文件名
        :param content: 文件内容
        :param mode: 生成模式，'overwrite'为覆盖模式，'append'为追加模式
        :return: 生成的文件的绝对路径
        """
        # 构建完整的文件路径
        full_file_path = os.path.join(self.output_path, relative_file_path)
        
        # 确保目录存在
        directory = os.path.dirname(full_file_path)
        if directory and not os.path.exists(directory):
            os.makedirs(directory, exist_ok=True)
        
        # 根据模式写入文件
        if mode.lower() == 'append':
            # 确保文件存在，然后追加内容
            if not os.path.exists(full_file_path):
                # 如果文件不存在，先创建空文件
                open(full_file_path, 'w', encoding='utf-8').close()
            with open(full_file_path, 'a', encoding='utf-8') as f:
                f.write(content)
        else:  # 默认覆盖模式
            with open(full_file_path, 'w', encoding='utf-8') as f:
                f.write(content)
        
        return full_file_path
    
    def set_output_path(self, output_path):
        """
        设置项目输出路径
        :param output_path: 新的输出路径
        """
        self.output_path = output_path


if __name__ == "__main__":
    # 创建ProjectManager实例（使用默认输出路径）
    project_manager = ProjectManager()
    print(f"默认输出路径: {project_manager.output_path}")

    # 生成一个文件（覆盖模式）
    file_path = project_manager.generate_file(
        "docs/readme.txt", 
        "这是项目的README文件内容。\n创建于: 2024-01-01"
    )
    print(f"生成文件: {file_path}")

    # 生成另一个文件（追加模式）
    file_path2 = project_manager.generate_file(
        "logs/access.log", 
        "访问日志记录 - 第一条\n",
        mode="append"
    )
    print(f"生成文件: {file_path2}")

    # 追加内容到已创建的文件
    project_manager.generate_file(
        "logs/access.log", 
        "访问日志记录 - 第二条\n",
        mode="append"
    )
    print(f"追加内容到: {file_path2}")

    # 修改输出路径
    project_manager.set_output_path("output/ex2")
    print(f"新的输出路径: {project_manager.output_path}")

    # 在新路径下生成文件
    file_path3 = project_manager.generate_file(
        "config/settings.json", 
        "{\"app_name\": \"MyApp\", \"version\": \"1.0.0\"}"
    )
    print(f"在新路径下生成文件: {file_path3}")